package com.gxh.service;

import com.gxh.dto.MachineDTO;
import com.gxh.dto.MachinePageQueryDTO;
import com.gxh.dto.MachineSaleDTO;
import com.gxh.dto.UserMachinePageQueryDTO;
import com.gxh.result.PageResult;
import com.gxh.vo.MachineDetailAdminVO;
import com.gxh.vo.MachineDetailVO;
import com.gxh.vo.MachineItemVO;
import com.gxh.vo.MachineKWResultVO;

import java.util.List;

public interface MachineService {
    /**
     * 设备分页查询
     * @param machinePageQueryDTO
     * @return
     */
    PageResult pageQuery(MachinePageQueryDTO machinePageQueryDTO);

    /**
     * 新增设备
     * @param machineDTO
     */
    void saveWithMedia(MachineDTO machineDTO);

    /**
     * 根据id查询设备详情
     *
     * @param id
     * @return
     */
    MachineDetailAdminVO getById(Long id);

    /**
     * 修改设备
     * @param machineDTO
     */
    void updateWithMedia(MachineDTO machineDTO);

    /**
     * 批量删除设备
     * @param ids
     */
    void deleteBatch(List<Long> ids);

    /**
     * 用户端设备分页查询
     * @param machinePageQueryDTO
     * @return
     */
    PageResult userPageQuery(UserMachinePageQueryDTO machinePageQueryDTO);

    /**
     * 设备关键词搜索
     * @param keyword
     * @return
     */
    List<MachineKWResultVO> search(String keyword);

    /**
     * 获取最新设备
     * @return
     */
    List<MachineItemVO> getNew();

    /**
     * 获取推荐设备
     * @return
     */
    List<MachineItemVO> getRecommend();

    /**
     * 修改设备状态
     * @param status
     * @param id
     */
    void updateStatus(Integer status, Long id);

    /**
     * 获取在工厂的设备
     * @return
     */
    List<MachineItemVO> getInFactory();

    /**
     * 用户端根据id查询设备详情
     * @param id
     * @return
     */
    MachineDetailVO userGetById(Long id);

    /**
     * 设备销售
     * @param machineSaleDTO
     */
    void sold(MachineSaleDTO machineSaleDTO);
}
